#ifndef ParaboleC_HPP_
#define ParaboleC_HPP_

#include "../BlockConstrainedProblem.hpp"

class ParaboleC: public BlockConstrainedProblem {

public:
	ParaboleC(Index dimension);

	bool get_blocks_indexes(Index n, Index m, Index blockCount, Index* startIndex);

	bool get_nlp_info(Index& n, Index& m, Index& nnz_jac_g, Index& nnz_h_lag);

	bool get_bounds_info(Index m, Number* g_l, Number* g_u);

	bool get_starting_point(Index n, Number* x);

	bool eval_f(Index n, const Number* x, bool new_x, Number& obj_value);

	bool eval_grad_f(Index n, const Number* x, bool new_x, Number* grad_f);

	bool eval_g(Index n, const Number* x, bool new_x, Index m, Number* g);

	bool eval_jac_g(Index n, const Number* x, bool new_x, Index m,
			Index nele_jac, Index* iRow, Index *jCol, Number* values);

};

#endif /* ParaboleC_HPP_ */
